"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/6/9 15:00
@Description : 
正则表达式:  字符串编写的一个规则表达形式
re 正则模块 常用函数
"""
import re

"""
re.search(pattern, text)
- 功能：扫描整个字符串，返回第一个符合正则表达式的匹配对象。如果没有找到匹配项，则返回 None。
"""
str_info = 'this is a url https://www.baidu.com other http://www.jd.com'
# 获取字符串中的url地址
reg = r'https?://www\.[a-z]+\.[a-z]{3}'
# 返回第一个匹配的对象  Match    .group()  获取实际数据
url = re.search(reg, str_info)
print(url.group())
# 在整个字符串中查找符合正则规则的所有字符串
urls = re.findall(reg, str_info)
print(urls)
print('--------------------------------------')
"""
re.match(pattern, text)
- 功能：从字符串的起始位置开始匹配正则表达式，如果起始位置匹配成功，则返回匹配对象，否则返回 None。
"""
str_info = 'https://www.baidu.com  is a url'
url = re.match(reg, str_info)
print(url.group())

print('------------------------')
"""
re.sub(pattern, replacement, text,count)
功能：将字符串中所有符合正则表达式 pattern 的部分替换为 repl，count 参数用于指定最大替换次数，默认为 0，表示替换所有匹配项
"""
text = "I love apples, apples are great"
reg = r'apples'
# count 默认为0  替换所有匹配项
# sub_text = re.sub(reg, 'orange', text)
# 指定替换次数
sub_text = re.sub(reg, 'orange', text, 1)
print(sub_text)

print('-----------------------')
"""
re.split(pattern, text,maxsplit=0, flags=0)
功能：根据正则表达式 pattern 将字符串分割为多个子字符串，返回一个列表。maxsplit 参数用于指定最大分割次数，默认为 0，表示不限制分割次数
"""
text = 'one,two,three,four,five,six'
reg = r','
# maxsplit 默认为0  分割所有
str_list = re.split(reg, text)
# 按照指定次数分割
# str_list = re.split(reg, text, maxsplit=2)
print(str_list)
print('----------------------------')
# 批量删除 delete  from user  where id = 1   delete  from user  where id in [1,2,3]
# http://localhost:8000/user/delete?ids=1,2,3
ids = '1,2,3,4,5,6'
# 将id拆分成 列表
ids_list = re.split(reg, ids)
print(ids_list)

# 列表推导式
id_int_list = [int(id) for id in ids_list]
print(id_int_list)
